home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 28
/
Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso
/
Aminet
/
mus
/
midi
/
KaraoFIX.lha
/
KaraoFIX.Bak
/
KaraoFIX.amosSourceCode
Wrap
AMOS Source Code
|
1997-09-08
|
3KB
|
158 lines
'
' KaraoFIX 1.0
'
' Source code for AMOS PRO
COM$=Command Line$
Screen Open 0,640,220,8,Hires
Amos To Front
C_PRINT[" KaraoFIX 1.0 - By Ninjaw P.B."]
C_PRINT[" ninjaw@chez.com"]
C_PRINT[" http://www.chez.com/ninjaw"]
C_PRINT[" This program fix some MIDI files in"]
C_PRINT[" .KAR format that are not played"]
C_PRINT[" correctly by MidiPlay."]
C_PRINT[""]
If COM$=""
C_PRINT["Usage: KaraoFIX <file>"]
C_PRINT[" or: KaraoFIX <directory> +'/' or ':'"]
Goto FIN
Else
If Right$(COM$,1)="/" or Right$(COM$,1)=":"
_MODE=True
Goto MO
End If
If Not Exist(COM$)
C_PRINT["Cannot find file:"]
C_PRINT[COM$]
Goto FIN
End If
End If
Goto OP
MO:
Dir$=COM$
Set Dir 100
COM$=Dir First$("") : FO
If Left$(COM$,1)="*"
Goto MO2
End If
If COM$=""
C_PRINT["DIRECTORY SCANNED"]
_MODE=False
_MODO=True
Goto FIN
End If
Goto OP
MO2:
COM$=Dir Next$ : FO
If Left$(COM$,1)="*"
Goto MO2
End If
If COM$=""
C_PRINT["DIRECTORY SCANNED"]
_MODE=False
_MODO=True
Goto FIN
End If
OP:
Print COM$
Open In 1,COM$ : LONG=Lof(1) : MTHD$=Input$(1,4) : Close 1
If MTHD$<>"MThd"
If Not _MODE
C_PRINT["Not a Midifile so not a karaoke"]
End If
Inc NOMIDI
Goto FIN
End If
Reserve As Work 1,LONG
Bload COM$,Start(1)
S=Hunt(Start(1) To Start(1)+Length(1),"MIDI KARAOKE FILE")
If S=0
If Not _MODE
C_PRINT["Midifile not in karaoke format"]
End If
Inc NOKAR
Goto FIN
End If
If Asc(Peek$(S-1,1))<>$20
If Not _MODE
C_PRINT["Karaoke file correct"]
End If
Inc CORRECT
Else
C_PRINT["FOUND A PROBLEM IN THIS KARAOKE FILE!!"]
If _MODE
Print COM$
End If
While Asc(Peek$(S-1,1))=20
Dec S
Wend
Poke$ S,"MIDI KARAOKE FILE "
C_PRINT["Saving fixed file..."]
Bsave COM$,Start(1) To Start(1)+Length(1)
Inc PROB
End If
FIN:
If _MODE
Goto MO2
End If
If _MODO
If NOMIDI
Print NOMIDI;" file(s) not a midifile"
End If
If NOKAR
Print NOKAR;" midifile(s) not karaoke"
End If
If CORRECT
Print CORRECT;" KAR file(s) correct"
End If
If PROB
Print PROB;" file(s) fixed!"
End If
End If
Print "PRESS ANY KEY TO LEAVE WINDOW"
Wait Key
End
Procedure FO
' Cette proc met en forme une chaine tir�e d'un dir first$
' (Vire le " 16506" � la fin)
Shared COM$
COM$=Left$(COM$,80)
COM$=Mid$(COM$,2)
For CON=80 To 1 Step -1
If Right$(COM$,1)=" "
COM$=Mid$(COM$,0,CON)
Else
Exit
End If
Next
End Proc
Procedure C_PRINT[A$]
' Ecrit dans le cli courant
Print A$
Pop Proc
If Prg State>=0
Print A$
Else
HANDLE=Doscall(-60)
If HANDLE
A$=A$+Chr$(10)
Dreg(1)=HANDLE
Dreg(2)=Varptr(A$)
Dreg(3)=Len(A$)
F=Doscall(-48)
End If
End If
End Proc